// commnonUtils.js
export default class CommnonUtils {

    // 防抖函数
    static debounce(fn: Function, delay: number) {
        let timer = null;
        return function () {
            //  @ts-ignore
            clearTimeout(timer);
            // @ts-ignore
            timer = setTimeout(() => fn.apply(this, arguments), delay);
        };
    }
    
    static throttle(fn: Function, delay: number) {
        let lastCall = 0; // 记录上一次调用的时间戳
        return function (...args: any[]) {
            const now = Date.now();
            if (now - lastCall >= delay) {
                lastCall = now;
                fn.apply(this, args); // 调用目标函数，并绑定上下文
            }
        };
    }

    /**
     * 格式化播放量
     * @param {Number} count 播放量
     * @returns {String} 格式化后的播放量
     */
    static formatPlayCount(count) {
        if (count >= 10000) {
            return (count / 10000).toFixed(1) + 'w';
        } else if (count >= 1000) {
            return (count / 1000).toFixed(1) + 'k';
        } else {
            return count;
        }
    }

    /**
     * 格式化更新时间
     * @param {String} updateTime 更新时间 (格式: "YYYY-MM-DD HH:mm:ss")
     * @returns {String} 格式化后的时间
     */
    static formatUpdateTime(updateTime) {
        const updateDate = new Date(updateTime);
        const now = new Date();
        const diffTime = Math.abs(now - updateDate);
        const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24));

        if (diffDays === 0) {
            return '今天';
        } else if (diffDays === 1) {
            return '昨天';
        } else {
            return `${diffDays}天前`;
        }
    }
}
